トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     ID3Infoオブジェクトのfor..inループ
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
永井勝則
Åê¹ÆNo.38314
投稿日時: 2008-4-4 18:39
職人
居住地: 白馬村
投稿: 716
使用環境:
Windows 7 :Flash CS4:
10.5.8 :Flash CS4
ID3Infoオブジェクトのfor..inループ
MP3ファイルのIDタグを含んだID3Infoオブジェクトをfor..inループ処理して、
ID3Infoオブジェクト内のプロパティ名を出力したいのですが、できません。
以下のコードはほぼFlashヘルプ(外部サウンドファイルのロード)のコードです。
var s:Sound = new Sound();
s.addEventListener(Event.ID3, onID3InfoReceived);
var req:URLRequest = new URLRequest("sound.mp3");
s.load(req);
s.play()

function onID3InfoReceived(event:Event):void {
	var id3:ID3Info = event.target.id3;
	//var id3:ID3Info = ID3Info(event.target.id3);
	
	trace("Received ID3 Info:");
	trace(id3)	//[object ID3Info]
	
	id3.nagai="NAGAI";
	
	for (var propName:String in id3) {
		trace(propName + " = " + id3[propName]); //nagai = NAGAI
	}
}


event.target.id3をキャストしたり、for..inループのpropNameの型を*にしてもfor..inループは動作しません。

trace(id3)ではID3Infoが出力されており、id3.artistなどの専用プロパティも値は正しく出力されるので、
データが届いていないことはないです。

またid3.nagai="NAGAI";のように勝手にプロパティを追加すると、
for..inが突然機能して、propNameとその値(nagai = NAGAI)が出力されます。

この結果から考えると、ID3Info内のプロパティはfor..inループで探れないのではないかと思えてきます。とはいえ、ヘルプには書かれています。

プロパティ名とその値をfor..inループで出力させるにはどうすればよいのでしょう?

追加----
以下の3行も加えてみたのですが、結果は変わりませんでした。
-----
trace(id3.hasOwnProperty("songName"));//true
id3.setPropertyIsEnumerable("songName",true);
trace(id3.propertyIsEnumerable("songName")); //false
-----


----------------
永井勝則:
himco.jp :

野中文雄
Åê¹ÆNo.38317
投稿日時: 2008-4-4 22:47
ちょんまげら
居住地: 東京
投稿: 4166
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: ID3Infoオブジェクトのfor..inループ
サウンドによるのではないでしょうか。

手元のいくつかのMP3サウンドでは、引用のスクリプトおよびヘルプ[サウンドメタデータの操作]のサンプルコードともに、単純にコピー&ペーストして動作します。

フリー素材集のようなサイトからいくつかダウンロードして試したところでは、何も[出力]されませんでした。
引用:
永井勝則さんは書きました:
以下のコードはほぼFlashヘルプ(外部サウンドファイルのロード)のコードです。
...[中略]...
この結果から考えると、ID3Info内のプロパティはfor..inループで探れないのではないかと思えてきます。とはいえ、ヘルプには書かれています。


----------------
 

永井勝則
Åê¹ÆNo.38323
投稿日時: 2008-4-5 9:44
職人
居住地: 白馬村
投稿: 716
使用環境:
Windows 7 :Flash CS4:
10.5.8 :Flash CS4
Re: ID3Infoオブジェクトのfor..inループ
先生のアドバイスを下に、MP3ファイルのID3バージョンを操作してみたところ、有意な結果が出ました!

Flash CS3のヘルプによると、
Flash Player 7以降でID3v2.4 v2.4タグがサポートされ、
Flash Player 9以降でID3v2.3、v2.4タグがサポートされる
そうです。

でID3のバージョンを次のように操作してみました。
v2.2ではtrace()による出力はなし
v2.3では一部のタグが出力
v2.4では(たぶん)フル出力。

という結果が出ました。

MP3変換ソフトでメタデータを埋め込んで変換しただけではだめな場合もあるということです。

どうもありがとうございました!


----------------
永井勝則:
himco.jp :

野中文雄
Åê¹ÆNo.38324
投稿日時: 2008-4-5 11:21
ちょんまげら
居住地: 東京
投稿: 4166
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: ID3Infoオブジェクトのfor..inループ
なるほど。以下の各項ですね。こちらこそ、参考になりました。

ActionScript 3.0:
Flash Playerによる MP3ファイルのID3プロパティへのアクセス」「Sound.id3プロパティ
ActionScript 2.0:
MP3ファイル内のID3タグの読み取り」「Sound.id3プロパティ
引用:
永井勝則さんは書きました:
Flash CS3のヘルプによると、
Flash Player 7以降でID3v2.4 v2.4タグがサポートされ、
Flash Player 9以降でID3v2.3、v2.4タグがサポートされる
そうです。

でID3のバージョンを次のように操作してみました。
v2.2ではtrace()による出力はなし
v2.3では一部のタグが出力
v2.4では(たぶん)フル出力。


----------------
 

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops